import axios from 'axios'
import type { InternalAxiosRequestConfig } from 'axios'
import { userStore } from '../store/index'
// 全局创建axios实例 根据当前的开发环境配置baseURL 配置全局的请求超时时间
let uStore = userStore();
const service = axios.create({
  baseURL: "/api",
  timeout: 5000,
})

// 配置请求拦截器 将token用Authorization携带到请求头 和一些全局的loading效果
service.interceptors.request.use((config: InternalAxiosRequestConfig<any>) => {
  if (uStore.token) {
    // 将token用Authorization携带到请求头
    config.headers['Authorization'] = "Bearer " + uStore.token
  }

  return config
})
// 配置响应拦截器 根据后台的状态 做公共提示 和错误处理 关闭loading
service.interceptors.response.use((response) => {

  if (response.data.code == 200) {
    return response.data
  }
  if (response.data.code == 401) {
    // token过期  回到登录
  }
  if (response.data.code == 502) {
    // 服务器维护
  }
  if (response.data.code == 404) {
    // 资源路径错误
  }

  return response.data
})


// 返回axios 实例
export default service